/-boot
BootController.ts
BootLayout.ts
StorageLoader.ts
boot.ts
/-docs
/-editor
/-files
/-files-old
/-imports
/-layout
MainLayout.ts
file.html
folder.html
page.html
teapo.css
/-storage ...
/-storage/attached ...
/-storage/attached/api
/-storage/attached/dom ...
DetectStorage.ts
LoadStorage.ts
UpdateStorage.ts
/-storage/attached/indexedDB
/-storage/attached/localStorage
/-storage/attached/webSQL
/-tests
/-typings
Dom.ts
TypeScriptService.ts
functions.ts
ko.ts
nteapo.html
persistence.api.ts
persistence.ts
shell.ts
teapo.html
teapo.ts
try.html
try.js
xxxxxxxxxx
 
4
5
    editedUTC: number = 0;
6
7
    private _byName: { [fullPath: string]: HTMLElement; } = {};
8
9
    constructor(
10
      private _parentElement: HTMLElement,
11
      private _document: { createElement(tag: string): HTMLElement; }) {
12
13
      // populate editedUTC from corresponding attribute
14
      var editedUTCValue = this._parentElement.getAttribute('data-edited-utc');
15
      if (editedUTCValue) {
16
        try {
17
          this.editedUTC = parseInt(editedUTCValue);
18
        }
19
        catch (parseEditedUTCError) {
20
          // TODO: logging safely?
21
          //console.log('parsing editedUTC ' + parseEditedUTCError);
22
        }
23
      }
24
    }
25
26
    load(recipient: LoadStorageRecipient): void {
27
28
      this._ensureIdSet();
29
30
      var dodgyElements: HTMLElement[] = [];
31
32
      var fileCount: number = 0;
33
      try {
34
        var fileCountStr = this._parentElement.getAttribute('data-teapo-file-count');
35
        if (fileCountStr)
36
          fileCount = parseInt(fileCountStr);
37
      }
38
      catch (error) { }
39
40
      if (fileCountStr)
41
        recipient.files(fileCount);
42
43
      // reset the speculative count hint, we'll recalculate
44
      fileCount = 0;
45
      for (var i = 0; i < this._parentElement.children.length; i++) {
46
        var fileElement = this._parentElement.children[i];
47
        if (this._loadFromElement(fileElement, recipient))
48
          fileCount++;
49
        else
50
          dodgyElements.push(fileElement);
51
      }
52
53
      for (var i = 0; i < dodgyElements.length; i++) {
54
        this._parentElement.removeChild(dodgyElements[i]);
55
      }
56
57
      this._parentElement.setAttribute('data-teapo-file-count', <any>fileCount);
58
59
      var updater = this._createUpdater();
60
      recipient.completed(updater);
61
    }
62
63
    migrate(
64
      editedUTC: number,
65
      filesByName: { [fullPath: string]: { [propertyName: string]: string; }; },
66
      callback: (error: Error, updater: attached.UpdateStorage) => void): void {
67
68
      this._ensureIdSet();
69
70
      this._wipeExistingElement();
71
      if (editedUTC)
72
        this._parentElement.setAttribute('data-edited-utc', editedUTC + '');
73
      this.editedUTC = editedUTC;
74
      //console.log('migrate(' + editedUTC + ', ' , filesByName, this._parentElement);
75
76
77
      var fileCount = 0;
78
      if (filesByName) {
79
        for (var fullPath in filesByName) if (filesByName.hasOwnProperty(fullPath)) {
80
          fileCount++;
81
          var element = UpdateStorage.createElement(this._parentElement, fullPath, this._document);
82
          var pbag = filesByName[fullPath];
42:41